package com.syh.jn.scm.service.api.supplier.stock;

import cn.redscarf.commons.wrapper.Wrapper;
import com.syh.jn.scm.dto.supplier.stock.StockOtherInBillItemVo;
import com.syh.jn.scm.dto.supplier.stock.StockOtherInBillMto;
import com.syh.jn.scm.dto.supplier.stock.StockOtherInBillSto;
import com.syh.jn.scm.dto.supplier.stock.StockOtherInBillVo;
import com.syh.jn.scm.service.core.CreateService;
import com.syh.jn.scm.service.core.DeleteService;
import com.syh.jn.scm.service.core.ReadService;
import com.syh.jn.scm.service.core.UpdateService;

import java.util.List;

/**
 * 其他入库接口
 */
public interface StockOtherInBillService extends CreateService<StockOtherInBillSto, Long>, DeleteService<Long>, UpdateService<StockOtherInBillMto>, ReadService<StockOtherInBillVo, Long> {

  /**
   * 取消其他入库单
   *
   * @param id 其它入库单id
   */
  void cancel(Long id);

  /**
   * 确认其他入库单
   *
   * @param id 其它入库单id
   */
  void confirm(Long id ,Long recordDateTimestamp);

  /**
   * 取消确认其他入库单
   *
   * @param id 其它入库单id
   */
  void cancelConfirm(Long id);

  /**
   * 取消锁状态
   *
   * @param id 其它入库单id
   */
  void unLock(Long id);

  /**
   * 获取其它入库单明细
   *
   * @param stockOtherInBillId 其它入库单id
   * @return 其它入库单明细list
   */
  List<StockOtherInBillItemVo> findStockOtherInBillItemVoListByInBillId(Long stockOtherInBillId);

  /**
   * 获取明细总条数
   *
   * @param wrapper 条件查询
   * @return 明细总条数
   */
  int getStockOtherInBillItemVoCount(Wrapper wrapper);

  /**
   * 其它入库明细分页
   *
   * @param wrapper  条件查询
   * @param startRow 当前页
   * @param count    页面大小
   * @return 其它入库单明细list
   */
  List<StockOtherInBillItemVo> findStockOtherInBillItemVoListPage(Wrapper wrapper, Integer startRow, Integer count);
}
